Категории
Самые читаемые
onlinekniga.com » Научные и научно-популярные книги » Радиотехника » Искусство схемотехники. Том 2 [Изд.4-е] - Пауль Хоровиц

Искусство схемотехники. Том 2 [Изд.4-е] - Пауль Хоровиц

Читать онлайн Искусство схемотехники. Том 2 [Изд.4-е] - Пауль Хоровиц

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
Перейти на страницу:

Флаг состояния устанавливается при приеме последней цифры числа из частотомера; состояние можно прочитать по адресу PORT + 4, где PORT — адрес, установленный на DIP-переключателях. Флаг состояния сбрасывается, когда ЦП читает последний (самый старший) байт данных (по адресу PORT + 3). Интерфейс позволяет работать и в режиме прерываний, которые через перемычку подключаются к любому из уровней IRQ2 или IRQ3, и разрешаются посылкой 1 по адресу PORT (а запрещаются посылкой 0); обратите внимание на неполную дешифрацию адреса в цепи записи, что позволило сэкономить вентили. Как и положено законопослушным гражданам, при включении питания мы сбрасываем оба триггера — и состояния, и разрешения прерываний.

Описанный интерфейс выполняет «упаковку» данных, объединяя несколько чисел в одно компьютерное слово. Если «числа» состоят из одного бита каждое, в 16-разрядное слово компьютера их можно упаковать 16 штук. Это не такое бессмысленное рассуждение, как кажется на первый взгляд: в цифровой обработке сигналов приходится иметь дело с периодическими выборками жестко ограниченных колебаний (которые можно рассматривать, как 1-бит аналого-цифровое преобразование); для повышения скорости выполнения операций ввода-вывода эти биты можно упаковать аппаратно и читать затем целыми словами. Конечно, если скорость не имеет значения, проще получать данные с помощью минимальных аппаратных средств, а всю упаковку и преобразования выполнять программно. Например, в приведенном примере можно было фиксировать и передавать в ЦП по одной цифре, если только быстродействие компьютера достаточно высоко, чтобы цифры не терялись.

Упражнение 10.8. Видоизмените схему интерфейса так, чтобы можно было программно выбирать линию запроса прерывания IRQ, используемую интерфейсом: посылкой 01Н по адресу PORT разрешать прерывания по IRQ2, посылкой 02Н по адресу PORT разрешать прерывания по IRQ3, а посылкой 0 по адресу PORT (или включением питания) запрещать и то, и другое.

Практическое замечание по поводу нашей схемы: следует избегать чрезмерной нагрузки линий шины. В приведенной схеме к каждой линии Dn подключаются выходы четырех тристабильных регистров `173, что создает чрезмерную емкостную нагрузку. Хотя наш интерфейс будет, несомненно, работать правильно, его подключение ограничит число дополнительных плат, которые можно установить на шине (особенно, если остальные разработчики окажутся грешными в том же отношении!). В нашем случае следовало использовать тристабильный 8-разрядный буфер (микросхема `244), включив его между выходами D0-D7 и шиной данных PC. Сигнал разрешения микросхемы можно получить, образовав логическое И декодированного адреса и сигнала IOR.

10.23. Форматы чисел

Формат байтов (или слов), получаемых из частотомера в рассмотренном примере, отличается от внутримашинного двоичного формата; частотомер образует двоично-кодированные десятичные коды, упакованные по две цифры в байте (или четыре цифры в слове). Чтобы с этими числами можно было выполнять какие-то вычисления, их следует преобразовать в целые числа или в числа с плавающей точкой (хотя в системе команд микропроцессора предусмотрены и команды с «десятичной коррекцией», позволяющие выполнять арифметические операции непосредственно над упакованными двоично-кодированными десятичными числами). Рассмотрим форматы чисел, обычно используемые в компьютерах (рис. 10.24), предмет, кратко затронутый нами в начале гл. 8.

Рис. 10.24. Форматы чисел. S-знак.

Целые числа. Целые числа (integer) со знаком всегда представляются, как дополнение до 2 и занимают 1,2 или 4 байт (см. рис. 10.24). Старший бит является знаковым, хотя дополнение до двух не совпадает с представлением в виде знака и числа (т. е. — 1 записывается, как 11111111, а не 10000001; см. разд. 8.03). Дополнение до 2 можно представить себе, как «смещенное» двоичное[11] с инвертированным старшим битом; но можно рассматривать его и как целое число со значением бит, указанным на рис. 10.24. Многие компьютеры позволяют объявлять переменные, как целые без знака в дополнение к объявлению целых со знаком в виде дополнения до 2. Двухбайтовое беззнаковое целое может иметь значение от 0 до 65535.

Числа с плавающей точкой. Числа с плавающей точкой, называемые также действительными числами (real), обычно занимают 32 бит («одинарная точность») или 64 бит («двойная точность»), однако иногда для промежуточных результатов вычислений используется дополнительный 80-бит формат. К сожалению, имеется несколько употребительных представлений этих чисел. Наиболее распространен формат IEEE (официальное название ANSI/IEEE Std 754-1985), который реализован почти во всех микропроцессорных наборах с плавающей точкой (включая Intel 8087/287/287, Motorola 68881, а также наборы фирм AMD, Weitek и др.) и по этой причине является стандартным для микрокомпьютеров, использующих эти наборы (в том числе IBM PC).

На рис. 10.24 показаны 32-бит и 64-бит форматы IEEE. 32-бит формат одинарной точности предусматривает 1 знаковый бит, 8 бит порядка и 23 бит мантиссы. Порядок определяет степень 2, на которую следует умножить мантиссу (см. ниже). Порядок «смещен» путем прибавления 127, так что поле порядка 01111111 соответствует порядку 0; в результате диапазон порядка составляет от —127 до +128. Мантисса также записывается любопытным способом, который был впервые использован фирмой DEC в своем формате с плавающей точкой. Двоичное число с плавающей точкой всегда можно записать в виде f.fff x 2е, где f.fff — мантисса (по основанию 2) («значащая часть»), а е — порядок (степень 2). Для того чтобы получить при заданном числе бит мантиссы максимальную точность, она «нормализуется» путем сдвига влево (с соответствующим декрементом порядка), пока лидирующий бит не станет равен 1, в результате чего мантисса представляется в виде 1.fff x 2е. Далее, используется прием «скрытого бита». Поскольку результирующая значащая часть мантиссы всегда имеет ненулевой старший бит, хранить его в памяти было бы избыточно; вместо 1fff можно записать просто fff, где лидирующая 1 подразумевается. В результате точность числа возрастает, так как его представление увеличивается на 1 бит, образуя диапазон от ±1.2·10-38 до ±3.4·1038.

Упражнение 10.9. Сконструируйте на бумаге минимальное и максимальное нормализованные числа с плавающей точкой и убедитесь, что приведенные выше предельные значения соответствуют истине.

Формат IEЕЕ с двойной точностью образуется аналогично, но точность мантиссы более чем удваивается (увеличиваясь на 29 бит), а порядок получает дополнительные 3 бит. Диапазон чисел указан на рисунке. Формат IEEE допускает также хранение ненормализованных чисел, что несколько увеличивает диапазон со стороны маленьких чисел (за счет уменьшения точности); «ненормализованные» числа могут доходить до величины ±1.4·10-45. Стандарт также определяет нуль (е = fff = 0; таким образом, есть 2 нуля, +0 и — 0), бесконечность (е = все единицы, fff = 0; поэтому оба знака), а также любопытный класс зарезервированных величин, имеющих официальное название «не число» (NAN = Not A Number).

Другой важный микрокомпьютерный формат чисел с плавающей точкой принадлежит фирме DEC и используется в компьютерах Micro VAX и LSI-11 (а также в их предках, мини-ЭВМ VAX и PDP-11). Он почти совпадает со стандартом IEЕЕ, имея то же число бит в порядке и мантиссе (включая использование скрытого бита) чисел с одинарной точностью. Отличия заключаются в другом значении смещения (128 вместо 127), а также в отсутствии лидирующих бит в мантиссе, которая представляется в виде.1fff (со скрытой 1). DEC определяет только один нуль (все биты которого равны 0); и не допускает ненормализованных чисел и бесконечности; имеются, однако, величины, аналогичные «не числам» IEEE. DEC также определяет 64-бит формат удвоенной точности.

Последние два формата, приведенные на рис. 10.24, используются не в микрокомпьютерах, а в больших ЭВМ или в машинах специального назначения. Формат «IBM» в течение некоторого времени использовался в универсальных ЭВМ фирмы IBM и даже в некоторых мини-ЭВМ, например, Nova фирмы Data General. 7-бит смещенный порядок определяет степень 16, а не 2, увеличивая диапазон чисел. Мантисса в результате может иметь до трех лидирующих нулей, т. е. нормализованная часть содержит ненулевую старшую шестнадцатеричную цифру.

Упражнение 10.10. Чтобы понять смысл последней фразы, напишите представление числа 1.0 в формате IBM. После этого напишите следующее меньшее число в том же формате.

Использование в формате IBM числа 16 в качестве основания увеличивает динамический диапазон, но уменьшает точность. Более того, точность несколько изменяется от числа к числу из-за переменного количества лидирующих двоичных нулей; это явление известно, как «качание» (wobble). В формате IBM отсутствуют «не числа» и бесконечность, и имеется только один нуль (все биты нули); не нормализованные числа не допускаются. Имеется формат IBM и для чисел с двойной точностью (64 бит). Последний формат на рис. 10.24, MIL STD-1750A, используется в военных системах. Он необычен в том отношении, что вместо знака и величины числа в нем записывается мантисса в форме дополнения до двух и порядок тоже в форме дополнения до двух (строго говоря, предыдущие форматы характеризуются записью мантиссы в форме знак/величина, а порядка в форме смещенного двоичного). В формате отсутствуют бесконечности, «не числа» и не нормализованные числа; имеется вариант для чисел с удвоенной точностью.

Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Искусство схемотехники. Том 2 [Изд.4-е] - Пауль Хоровиц.
Комментарии